# -*- coding: utf-8 -*-
"""
@Time    : 2024/7/10 14:40 
@Author  : ZhangShenao 
@File    : 2.使用configurable_fields动态替换Prompt.py 
@Desc    : 使用configurable_fields方法,可以动态替换Prompt提示词
"""
from langchain_core.prompts import PromptTemplate
from langchain_core.runnables import ConfigurableField

# 创建PromptTemplate,并设置可配置字段
prompt = PromptTemplate.from_template('请帮我讲一个关于{subject}的冷笑话').configurable_fields(
    template=ConfigurableField(
        id='template_value'
    )
)

# 调用PromptTemplate,并传入可配置字段的值
# 通过ConfigurableField,动态替换了PromptTemplate中template字段的值
prompt_text = prompt.invoke({'subject': '程序员'}, config={
    'configurable': {
        'template_value': '请帮我写一首关于{subject}的藏头诗',
    }
}).to_string()

print(prompt_text)  # 请帮我写一首关于程序员的藏头诗
